The popularity of mobile computing and communications devices has created a corresponding wish for the ability to deliver and receive information whenever wanted by users. Put simply, users want ubiquitous access to information and applications from a variety of devices, wherever, whenever, and whatever the devices' respective capabilities, and in addition, users want to be able to access and update such information on the fly, and they want guarantees that the data is as correct and up to date as can be.
There are a variety of distributed data systems that have attempted to have devices and objects share replicas of data with one another. For instance, music sharing systems may synchronize music between a PC, a Cell phone, a gaming console and an MP3 player. Email data may be synchronized among a work server, a client PC, and a portable email device. However, today, to the extent such devices synchronize a set of common information with each other, the synchronization typically takes place according to a static setup among the devices. However, when these devices become disconnected frequently or intermittently, i.e., when they are loosely coupled such that they may become disconnected from communicating with each other, e.g., when a cell phone is in a tunnel, or when the number of devices to be synchronized is dynamic, it becomes desirable to have a topology independent way for the devices to determine what changes each other device needs when they re-connect to one another, or as they join the network.
As shown in FIG. 1, there are various examples today where a master node 100 synchronizes in a dedicated manner with a client node 110, such as when an email server synchronizes with an email client. Due to the dedicated synchronization between the two devices, the information 102 needed to synchronize between the two devices can be tracked by the master node 100. Such information 102 can also optionally be tracked by client node 110 as well, however, when the connection between master node 100 and client node 110 becomes disconnected at times, or when the number of synchronizing devices can suddenly increase or decrease, tracking the necessary information of the common information that each device needs across all of those devices becomes a difficult problem.
Current solutions often base their synchronization semantics solely on clocks or logical watermarks for a specific node (e.g., the email server), as opposed to any node. These systems can work well in cases of a single connecting node or master. However, they run into problems when the topology or pattern in which the nodes connect can change unpredictably.
Other systems build proprietary synchronization models for specific kinds of data objects, tracking an enormous amount of primitive metadata specific to the data format across the devices in order to handle the problem. For instance, to synchronize objects of a particular Word processing document format, a lot of overhead and complexity goes into representing a document and its fundamental primitives as they change over time, and representing that information efficiently to other devices wishing to synchronize according to a common set of Word processing documents. In addition to such systems being expensive and complex to build and non-extendible due to the custom data format upon which they are based, such systems are inherently unscalable due to large amounts of metadata that must be generated, analyzed and tracked.
In addition, such solutions apply only to the one specific domain, e.g., Word processing documents. When synchronization objects of all kinds are considered, e.g., pictures, videos, emails, documents, database stores, etc., one can see that implementing custom synchronization solutions based on each object type for tracking evolution of such objects across all devices in a multi-master environment is unworkable today. Accordingly, such solutions inextricably link synchronization semantics with the data semantics.
Thus, there is a need for node-independent synchronization knowledge when computers in a topology change the way they connect to each other or as the number of computers grows. For instance, with a media player, it might be desirable to synchronize among multiple computers and multiple websites. In most instances, most applications can only synchronize data between a few well-known endpoints (home PC and media player). As the device community evolves over time for a user of the media player application, however, the need for data synchronization flexibility for the music library utilized by the devices increases, thereby creating the need for a more robust system.
The need becomes even more complex when one considers that many computing objects are not monolithic in terms of the types of changes that can happen. In today's complex computing environments, object changes encompass a wide variety of changes beyond mere “add data to the object” or “subtract data from the object.” A change to some of the data of the object can also be thought of as subtracting the data to be changed and adding the data reflecting the change. Thus, under the monolithic view, there is a limited view of what can happen to an object in terms of evolution of the object: the data represented by the object can be augmented with some new data, some of the data represented by the object can be changed while the rest stays the same and/or some of the data represented by the object can be deleted.
In this regard, an entire host of properties can also change for an object. For instance, the name of an object, when the object was last viewed, the length allowable for fields of an object, the schema of an object (e.g., contact schema), the fidelity of an object (e.g., audio), the compression scheme applied to an object, the resolution of an object (e.g., images or video), the file format of the object, or any other arbitrary function that can be defined over an object, are all examples of properties that can change for an object that are not adequately reflected by mere representation of adding or subtracting from the data of an object.
In this regard, different devices have different requirements or limitations with respect to representing the same objects. For instance, representing objects on a PC in general implicates different requirements than representing objects on a mobile phone with limited memory. As an example, it is more suitable to represent a 10 Mb raw image on the PC for a given image object, whereas it is more suitable for the mobile phone with the smaller display and memory to represent the same given image object as a 300 Kb image.
Some conventional systems have treated objects that undergo a quality change from a first quality to a second quality as separate objects, i.e., by creating an entirely new second object that reflects the changes undergone by the object to the second quality in addition to maintaining the first object which stays of the first quality. As a result, both objects become synchronized moving forward. One can see that such system becomes prohibitive and highly wasteful if the number of different objects, number of devices and/or the number of versions of different quality becomes non-trivial.
Thus, since objects can change in complex ways, particularly as they are synchronized across different devices of different capabilities, a way to represent such changes efficiently in synchronization metadata and simultaneously handle synchronization in a loosely coupled, multi-master synchronization environment, as described above, is currently desirable. In brief, the ability to represent loss or gain of quality of objects in a knowledge exchange in a complex multi-master network topology of devices as objects undergo changes in quality, if made possible, would be desirable for a myriad of synchronization scenarios.
The above-described deficiencies of today's synchronization models are merely intended to provide an overview of some of the problems of conventional systems, and are not intended to be exhaustive. Other problems with conventional systems and corresponding benefits of the various non-limiting embodiments described herein may become further apparent upon review of the following description.